home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Found / FWString / Sources / FWCharIt.cpp < prev    next >
Encoding:
Text File  |  1996-08-16  |  13.8 KB  |  402 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWCharIt.cpp
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWFound.hpp"
  11.  
  12. #ifndef FWCHARIT_H
  13. #include "FWCharIt.h"
  14. #endif
  15.  
  16. #ifndef SOM_FW_OTextRunReader_xh
  17. #include "SLTxtRun.xh"
  18. #endif
  19.  
  20. #ifndef FWEXCEPT_H
  21. #include "FWExcept.h"
  22. #endif
  23.  
  24. #ifdef FW_BUILD_MAC
  25. #pragma segment Strings
  26. #endif
  27.  
  28. //========================================================================================
  29. //    CLASS FW_CTextReader
  30. //========================================================================================
  31.  
  32. FW_DEFINE_AUTO(FW_CTextReader)
  33.  
  34. //----------------------------------------------------------------------------------------
  35. //    FW_CTextReader::FW_CTextReader
  36. //----------------------------------------------------------------------------------------
  37.  
  38. FW_CTextReader::FW_CTextReader(FW_OTextRunReader* adoptedReader) :
  39.     fRep(NULL)
  40. {
  41.     FW_SOMEnvironment ev;
  42.     fRep = FW_PrivTextReader_New(ev, adoptedReader);
  43.     FW_PrivTextReader_Acquire(fRep, ev);
  44.     FW_END_CONSTRUCTOR
  45. }
  46.  
  47. //----------------------------------------------------------------------------------------
  48. //    FW_CTextReader::FW_CTextReader
  49. //----------------------------------------------------------------------------------------
  50.  
  51. FW_CTextReader::FW_CTextReader(FW_HTextReader rep) :
  52.     fRep(rep)
  53. {
  54.     FW_SOMEnvironment ev;
  55.     FW_PrivTextReader_Acquire(fRep, ev);
  56.     FW_END_CONSTRUCTOR
  57. }
  58.  
  59. //----------------------------------------------------------------------------------------
  60. //    FW_CTextReader::~FW_CTextReader
  61. //----------------------------------------------------------------------------------------
  62.  
  63. FW_CTextReader::~FW_CTextReader()
  64. {
  65.     FW_START_DESTRUCTOR
  66.     FW_SOMEnvironment ev;
  67.     FW_PrivTextReader_Release(fRep, ev);
  68. }
  69.  
  70. //========================================================================================
  71. //    CLASS FW_CTextWriter
  72. //========================================================================================
  73.  
  74. FW_DEFINE_AUTO(FW_CTextWriter)
  75.  
  76. //----------------------------------------------------------------------------------------
  77. //    FW_CTextWriter::FW_CTextWriter
  78. //----------------------------------------------------------------------------------------
  79.  
  80. FW_CTextWriter::FW_CTextWriter(FW_OTextRunWriter* adoptedWriter) :
  81.     fRep(0)
  82. {
  83.     FW_SOMEnvironment ev;
  84.     fRep = FW_PrivTextWriter_New(ev, adoptedWriter);
  85.     FW_PrivTextWriter_Acquire(fRep);
  86.     FW_END_CONSTRUCTOR
  87. }
  88.  
  89. //----------------------------------------------------------------------------------------
  90. //    FW_CTextWriter::FW_CTextWriter
  91. //----------------------------------------------------------------------------------------
  92.  
  93. FW_CTextWriter::FW_CTextWriter(FW_HTextWriter rep) :
  94.     fRep(rep)
  95. {
  96.     FW_PrivTextWriter_Acquire(fRep);
  97.     FW_END_CONSTRUCTOR
  98. }
  99.  
  100. //----------------------------------------------------------------------------------------
  101. //    FW_CTextWriter::~FW_CTextWriter
  102. //----------------------------------------------------------------------------------------
  103.  
  104. FW_CTextWriter::~FW_CTextWriter()
  105. {
  106.     FW_START_DESTRUCTOR
  107.     FW_SOMEnvironment ev;
  108.     FW_PrivTextWriter_Release(fRep, ev);
  109. }
  110.  
  111. //========================================================================================
  112. //    CLASS FW_CMemoryReader
  113. //========================================================================================
  114.  
  115. //----------------------------------------------------------------------------------------
  116. //    FW_CMemoryReader::MakeWriter
  117. //----------------------------------------------------------------------------------------
  118.  
  119. FW_OMemoryRunReader* FW_CMemoryReader::MakeReader(char * buffer, FW_ByteCount length)
  120. {
  121.     FW_SOMEnvironment ev;
  122.     return (new FW_OMemoryRunReader())->Initialize(ev, buffer, length);
  123. }
  124.  
  125. //----------------------------------------------------------------------------------------
  126. //    FW_CMemoryReader::FW_CMemoryReader
  127. //----------------------------------------------------------------------------------------
  128.  
  129. FW_CMemoryReader::FW_CMemoryReader(const char * buffer, FW_ByteCount bytes) :
  130.     FW_CTextReader(MakeReader((char*)buffer, bytes))
  131. {
  132. }
  133.  
  134. //----------------------------------------------------------------------------------------
  135. //    FW_CMemoryReader::~FW_CMemoryReader
  136. //----------------------------------------------------------------------------------------
  137.  
  138. FW_CMemoryReader::~FW_CMemoryReader()
  139. {
  140. }
  141.  
  142. //========================================================================================
  143. //    CLASS FW_CMemoryWriter
  144. //========================================================================================
  145.  
  146. //----------------------------------------------------------------------------------------
  147. //    FW_CMemoryWriter::MakeWriter
  148. //----------------------------------------------------------------------------------------
  149.  
  150. FW_OMemoryRunWriter* FW_CMemoryWriter::MakeWriter(char * buffer, FW_ByteCount capacity)
  151. {
  152.     FW_SOMEnvironment ev;
  153.     return (new FW_OMemoryRunWriter())->Initialize(ev, buffer, capacity);
  154. }
  155.  
  156. //----------------------------------------------------------------------------------------
  157. //    FW_CMemoryWriter::FW_CMemoryWriter
  158. //----------------------------------------------------------------------------------------
  159.  
  160. FW_CMemoryWriter::FW_CMemoryWriter(char* buffer, FW_ByteCount capacity) :
  161.     FW_CTextWriter(MakeWriter(buffer, capacity))
  162. {
  163. }
  164.  
  165. //----------------------------------------------------------------------------------------
  166. //    FW_CMemoryWriter::~FW_CMemoryWriter
  167. //----------------------------------------------------------------------------------------
  168.  
  169. FW_CMemoryWriter::~FW_CMemoryWriter()
  170. {
  171. }
  172.  
  173. //========================================================================================
  174. //    CLASS FW_CTextReader Inline Functions
  175. //========================================================================================
  176.  
  177. //----------------------------------------------------------------------------------------
  178. //    FW_CTextReader::GetCharacterAndAdvance
  179. //----------------------------------------------------------------------------------------
  180.  
  181. FW_LChar FW_CTextReader::GetCharacterAndAdvance()
  182. {
  183.     FW_SOMEnvironment ev;
  184.     return FW_PrivTextReader_GetCharacterAndAdvance(fRep, ev, NULL);
  185. }
  186.  
  187. //----------------------------------------------------------------------------------------
  188. //    FW_CTextReader::GetCharacterAndAdvance
  189. //----------------------------------------------------------------------------------------
  190.  
  191. FW_LChar FW_CTextReader::GetCharacterAndAdvance(FW_ByteCount& bytesInChar)
  192. {
  193.     FW_SOMEnvironment ev;
  194.     return FW_PrivTextReader_GetCharacterAndAdvance(fRep, ev, &bytesInChar);
  195. }
  196.  
  197. //----------------------------------------------------------------------------------------
  198. //    FW_CTextReader::BackupAndGetCharacter
  199. //----------------------------------------------------------------------------------------
  200.  
  201. FW_LChar FW_CTextReader::BackupAndGetCharacter()
  202. {
  203.     FW_SOMEnvironment ev;
  204.     return FW_PrivTextReader_BackupAndGetCharacter(fRep, ev, NULL);
  205. }
  206.  
  207. //----------------------------------------------------------------------------------------
  208. //    FW_CTextReader::BackupAndGetCharacter
  209. //----------------------------------------------------------------------------------------
  210.  
  211. FW_LChar FW_CTextReader::BackupAndGetCharacter(FW_ByteCount& bytesInChar)
  212. {
  213.     FW_SOMEnvironment ev;
  214.     return FW_PrivTextReader_BackupAndGetCharacter(fRep, ev, &bytesInChar);
  215. }
  216.  
  217. //----------------------------------------------------------------------------------------
  218. //    FW_CTextReader::PeekCharacter
  219. //----------------------------------------------------------------------------------------
  220.  
  221. FW_LChar FW_CTextReader::PeekCharacter()
  222. {
  223.     return FW_PrivTextReader_PeekCharacter(fRep, NULL);
  224. }
  225.  
  226. //----------------------------------------------------------------------------------------
  227. //    FW_CTextReader::PeekCharacter
  228. //----------------------------------------------------------------------------------------
  229.  
  230. FW_LChar FW_CTextReader::PeekCharacter(FW_ByteCount& bytesInChar)
  231. {
  232.     return FW_PrivTextReader_PeekCharacter(fRep, &bytesInChar);
  233. }
  234.  
  235. //----------------------------------------------------------------------------------------
  236. //    FW_CTextReader::Advance
  237. //----------------------------------------------------------------------------------------
  238.  
  239. void FW_CTextReader::Advance(FW_ByteCount delta)
  240. {
  241.     FW_SOMEnvironment ev;
  242.     FW_PrivTextReader_Advance(fRep, ev, delta);
  243. }
  244.  
  245. //----------------------------------------------------------------------------------------
  246. //    FW_CTextReader::Backup
  247. //----------------------------------------------------------------------------------------
  248.  
  249. void FW_CTextReader::Backup(FW_ByteCount delta)
  250. {
  251.     FW_SOMEnvironment ev;
  252.     FW_PrivTextReader_Backup(fRep, ev, delta);
  253. }
  254.  
  255. //----------------------------------------------------------------------------------------
  256. //    FW_CTextReader::GetPosition
  257. //----------------------------------------------------------------------------------------
  258.  
  259. FW_ByteCount FW_CTextReader::GetPosition()
  260. {
  261.     return FW_PrivTextReader_GetPosition(fRep);
  262. }
  263.  
  264. //----------------------------------------------------------------------------------------
  265. //    FW_CTextReader::SetPosition
  266. //----------------------------------------------------------------------------------------
  267.  
  268. void FW_CTextReader::SetPosition(FW_ByteCount position)
  269. {
  270.     FW_SOMEnvironment ev;
  271.     FW_PrivTextReader_SetPosition(fRep, ev, position);
  272. }
  273.  
  274. //----------------------------------------------------------------------------------------
  275. //    FW_CTextReader::GetByteLength
  276. //----------------------------------------------------------------------------------------
  277.  
  278. FW_ByteCount FW_CTextReader::GetByteLength()
  279. {
  280.     return FW_PrivTextReader_GetByteLength(fRep);
  281. }
  282.  
  283. //----------------------------------------------------------------------------------------
  284. //    FW_CTextReader::PeekRunAhead
  285. //----------------------------------------------------------------------------------------
  286.  
  287. void FW_CTextReader::PeekRunAhead(const char*& start, FW_ByteCount& length)
  288. {
  289.     FW_PrivTextReader_PeekRunAhead(fRep, &start, &length);
  290. }
  291.  
  292. //----------------------------------------------------------------------------------------
  293. //    FW_CTextReader::PeekRunBehind
  294. //----------------------------------------------------------------------------------------
  295.  
  296. void FW_CTextReader::PeekRunBehind(const char*& end, FW_ByteCount& length)
  297. {
  298.     FW_PrivTextReader_PeekRunBehind(fRep, &end, &length);
  299. }
  300.  
  301. //----------------------------------------------------------------------------------------
  302. //    FW_CTextReader::Advance
  303. //----------------------------------------------------------------------------------------
  304.  
  305. void FW_CTextReader::Advance()
  306. {
  307.     FW_SOMEnvironment ev;
  308.     FW_PrivTextReader_Advance(fRep, ev, kTempHackOneBytePerCharacter);
  309. }
  310.  
  311. //----------------------------------------------------------------------------------------
  312. //    FW_CTextReader::Backup
  313. //----------------------------------------------------------------------------------------
  314.  
  315. void FW_CTextReader::Backup()
  316. {
  317.     FW_SOMEnvironment ev;
  318.     FW_PrivTextReader_Backup(fRep, ev, kTempHackOneBytePerCharacter);
  319. }
  320.  
  321. //----------------------------------------------------------------------------------------
  322. //    FW_CTextReader::PeekByte
  323. //----------------------------------------------------------------------------------------
  324.  
  325. const char* FW_CTextReader::PeekByte() const
  326. {
  327.     return FW_PrivTextReader_PeekByte(fRep);
  328. }
  329.  
  330. //========================================================================================
  331. //    CLASS FW_CTextWriter Inline Functions
  332. //========================================================================================
  333.  
  334. //----------------------------------------------------------------------------------------
  335. //    FW_CTextWriter::FlushBuffer
  336. //----------------------------------------------------------------------------------------
  337.  
  338. void FW_CTextWriter::FlushBuffer()
  339. {
  340.     FW_SOMEnvironment ev;
  341.     FW_PrivTextWriter_FlushBuffer(fRep, ev);
  342. }
  343.  
  344. //----------------------------------------------------------------------------------------
  345. //    FW_CTextWriter::PutCharacterAndAdvance
  346. //----------------------------------------------------------------------------------------
  347.  
  348. void FW_CTextWriter::SetBufferSum(FW_ByteCount bufferSum)
  349. {
  350.     FW_PrivTextWriter_SetBufferSum(fRep, bufferSum);
  351. }
  352.  
  353. //----------------------------------------------------------------------------------------
  354. //    FW_CTextWriter::PutCharacterAndAdvance
  355. //----------------------------------------------------------------------------------------
  356.  
  357. void FW_CTextWriter::PutCharacterAndAdvance(FW_LChar character, FW_ByteCount bytesInChar)
  358. {
  359.     FW_SOMEnvironment ev;
  360.     FW_PrivTextWriter_PutCharacterAndAdvance(fRep, ev, character, bytesInChar);
  361. }
  362.  
  363. //----------------------------------------------------------------------------------------
  364. //    FW_CTextWriter::GetPosition
  365. //----------------------------------------------------------------------------------------
  366.  
  367. FW_ByteCount FW_CTextWriter::GetPosition()
  368. {
  369.     FW_SOMEnvironment ev;
  370.     return FW_PrivTextWriter_GetPosition(fRep, ev);
  371. }
  372.  
  373. //----------------------------------------------------------------------------------------
  374. //    FW_CTextWriter::FlushAndGetNextBuffer
  375. //----------------------------------------------------------------------------------------
  376.  
  377. void FW_CTextWriter::FlushAndGetNextBuffer()
  378. {
  379.     FW_SOMEnvironment ev;
  380.     FW_PrivTextWriter_FlushAndGetNextBuffer(fRep, ev);
  381. }
  382.  
  383. //----------------------------------------------------------------------------------------
  384. //    FW_CTextWriter::WritePeek
  385. //----------------------------------------------------------------------------------------
  386.  
  387. void FW_CTextWriter::WritePeek(char*& start, FW_ByteCount& length)
  388. {
  389.     FW_SOMEnvironment ev;
  390.     FW_PrivTextWriter_WritePeek(fRep, ev, &start, &length);
  391. }
  392.  
  393. //----------------------------------------------------------------------------------------
  394. //    FW_CTextWriter::WritePeekAdvance
  395. //----------------------------------------------------------------------------------------
  396.  
  397. void FW_CTextWriter::WritePeekAdvance(char* start, FW_ByteCount bytesWritten)
  398. {
  399.     FW_PrivTextWriter_WritePeekAdvance(fRep, start, bytesWritten);
  400. }
  401.  
  402.